home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Commodore Disc 31
/
Commodore_Disc_31_19xx_-_de.d64
/
gelbe kugeln.64
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
10KB
|
585 lines
10 rem ========================64
20 rem (p) commodore welt ==
30 rem ==========================
40 rem (c) by ==
50 rem guenter kramer ==
60 rem ==
70 rem version 2.0 40z./ascii==
80 rem c-64 floppy/datasette ==
90 rem ==========================
95 gosub 60000
100 ifa=1then130
110 a=1
120 load"mp gelbe kugeln",8,1
130 gosub4740
140 gosub2920
150 gosub3130
160 gosub4180
170 gosub1160
180 gosub290
190 gosub5270
200 printchr$(147)
210 print"ein neues spiel?"s2$"(j/n)"
220 geta$
230 ifa$="n"thenend
240 ifa$<>"j"then220
250 run130
260 ********************
270 *** spiel laeuft ***
280 ********************
290 sn=1:bi=0
300 a=rnd(-ti)
310 gosub1710
320 gz=5:ru=1
330 goto370
340 sn=sn+1
350 ifsn>anthensn=1:ru=ru+1:bo=bo-60:gz=5
360 ifbo=0then1030
370 pokeze,0:pokesp,0:syscu
380 a$=str$(bi)
390 printchr$(154)a$". bild";
400 a$=str$(ru)
410 printtab(15)a$". runde";
420 a$=right$(chr$(32)+str$(bo),4)
430 printtab(28)"bonus ="a$
440 zf=int((10+2*an)*rnd(1))+2
450 a=ko(sn,0)
460 a0=ko(sn,1)
470 ifms(sn,2)=72then920
480 gosub2690
490 zu=1
500 poke198,0
510 gosub2480
520 ifei=32then630
530 ifei=29thena=a+1
540 ifei=157thena=a-1
550 ifei=145thena0=a0-1
560 ifei=17thena0=a0+1
570 ifa=0thena=1
580 ifa=7thena=6
590 ifa0=0thena0=1
600 ifa0=8thena0=7
610 gosub2690
620 goto510
630 @sma
640 ifru=1then840
650 ifzu<>zfthen840
660 ifan>1then760
670 gosub2190
680 @rc,2,31
690 a4=a:a5=a0
700 a=int(rnd(0)*6)+1
710 a0=int(rnd(0)*7)+1
720 gosub2190
730 a=a4:a0=a5
740 @rc,0,31
750 goto850
760 a4=sn
770 @rc,2,31
780 forsn=1toan
790 gosub2190
800 next
810 @rc,0,31
820 sn=a4
830 goto850
840 gosub2190
850 ko(sn,0)=a
860 ko(sn,1)=a0
870 zu=zu+1
880 ifms(sn,2)=72then910
890 ifzu>gzthen920
900 goto510
910 gz=zu-1
920 ms(sn,1)=ms(sn,1)+ms(sn,2)
930 gosub2800
940 ifsn<anthen340
950 en$="0"
960 forsn=1toan
970 ifms(sn,2)<72then1010
980 ms(sn,1)=ms(sn,1)+bo
990 gosub2800
1000 en$="1"
1010 next
1020 ifen$="0"then340
1030 sn=1
1040 ifbi<6then310
1050 pokeze,24:pokesp,10:syscu
1060 printchr$(153)"spielende";
1070 print"(return)"
1080 geta$
1090 ifa$<>chr$(13)then1080
1100 @end
1110 printchr$(147)
1120 return
1130 *********************
1140 *** sprites laden ***
1150 *********************
1160 @soa:@sua
1170 @sof,0
1180 @suf,0
1190 a1$=""
1200 a2$=""
1210 a3=0
1220 a$=chr$(32)+chr$(32)
1230 fori=1toan
1240 a0$=right$(str$(i),1)
1250 a0$=a$+a0$+a$
1260 ifi>4then1290
1270 a1$=a1$+a0$+chr$(32)
1280 goto1300
1290 a2$=a2$+a0$+chr$(32)
1300 next
1310 @rc,0,255
1320 a2=1:a1=5:a=1
1330 a$=a1$
1340 gosub3890
1350 a$=a2$
1360 a2=4:a1=1
1370 gosub3890
1380 a$=".....0"
1390 a$=a$+a$
1400 a$=a$+a$
1410 a$=left$(a$,len(a1$))
1420 a2=1:a1=14
1430 gosub3890
1440 a2=4:a1=10
1450 a$=left$(a$,len(a2$))
1460 gosub3890
1470 @sox,0:@sux,0
1480 fori=1to7step2
1490 a=i*40
1500 @sok,a,0,i
1510 @sok,a+24,0,i+1
1520 @suk,a,0,i
1530 @suk,a+24,0,i+1
1540 next
1550 @src,12
1560 @sre:@sma
1570 printchr$(147)
1580 a$="x"
1590 a2=2:a3=0
1600 @smf,0
1610 forj=1toan
1620 a1=3*j-2
1630 gosub3450
1640 @smk,80*j-60,65,j
1650 ifj>4then:@smk,80*j-380,145,j
1660 next
1670 return
1680 ******************
1690 *** neues bild ***
1700 ******************
1710 printchr$(147)
1720 bi=bi+1
1730 fori=1toan
1740 ko(i,0)=1
1750 ko(i,1)=1
1760 ms(i,2)=18
1770 next
1780 a$=chr$(119)+chr$(119)+chr$(119)
1790 a$=a$+chr$(113)+chr$(113)+a$
1800 a$=a$+chr$(32)+chr$(32)+a$
1810 a$=a$+chr$(32)+chr$(32)+a$
1820 a0$=a$
1830 ifan>3then1850
1840 a0$=left$(a$,an*10-2)
1850 fori=3to11
1860 pokeze,i:pokesp,1:syscu
1870 printchr$(158)a0$
1880 next
1890 a0$=a$
1900 ifan<5then1970
1910 ifan=8then1930
1920 a0$=left$(a$,(an-4)*10-2)
1930 fori=13to21
1940 pokeze,i:pokesp,1:syscu
1950 printchr$(158)a0$
1960 next
1970 forsn=1toan
1980 fork=1to10
1990 a=1+int(6*rnd(1))
2000 a0=1+int(7*rnd(1))
2010 gosub2190
2020 next
2030 a=2:a0=6:gosub2190
2040 a=5:a0=2:gosub2190
2050 pokeze,2
2060 pokesp,10*sn-9
2070 ifsn<5then2100
2080 pokeze,22
2090 pokesp,10*sn-49
2100 syscu
2110 printchr$(30)chr$(18)e$
2120 next
2130 sn=1
2140 bo=900
2150 return
2160 *********************
2170 *** setzen felder ***
2180 *********************
2190 fori=atoi+2
2200 forj=a0toj+2
2210 a1=40*j+i+70+10*sn
2220 ifsn>4thena1=a1+360
2230 a2=peek(f+a1)and15
2240 a3=peek(b+a1)
2250 ifa3=81then2310
2260 ifa2=7thenpokef+a1,10:goto2290
2270 ms(sn,2)=ms(sn,2)+1
2280 pokef+a1,7
2290 pokeb+a1,81
2300 goto2330
2310 ifa2=7thenms(sn,2)=ms(sn,2)-1
2320 pokeb+a1,87
2330 a$=str$(ms(sn,2))
2340 a$=right$(a$,2)
2350 pokeze,2
2360 pokesp,10*sn-3
2370 ifsn<5then2400
2380 pokeze,22
2390 pokesp,10*sn-43
2400 syscu
2410 printchr$(159)a$
2420 nextj,i
2430 e$=e$(ms(sn,0))
2440 return
2450 ************************
2460 *** eingabe abfragen ***
2470 ************************
2480 ei=0
2490 geta$
2500 @sme,sn
2510 ifms(sn,0)<3then2550
2520 ifa$=""then2640
2530 ei=asc(a$)
2540 goto2640
2550 poke56322,224
2560 a2=peek(56320)
2570 ifms(sn,0)=1thena2=peek(56321)
2580 poke56322,255
2590 if(a2and1)=0thenei=145
2600 if(a2and2)=0thenei=17
2610 if(a2and4)=0thenei=157
2620 if(a2and8)=0thenei=29
2630 if(a2and16)=0thenei=32
2640 ifei=0then2490
2650 return
2660 **********************
2670 *** bewegen sprite ***
2680 **********************
2690 a1=80*sn-68+8*a
2700 a2=57
2710 ifsn<5then2740
2720 a1=a1-320
2730 a2=137
2740 a2=a2+8*a0
2750 @smk,a1,a2,sn
2760 return
2770 ************************
2780 *** zaehler anzeigen ***
2790 ************************
2800 a$=str$(ms(sn,1))
2810 a$=right$(a$,len(a$)-1)
2820 a$=right$("....."+a$,6)
2830 a2=1:a1=14:a3=0
2840 ifsn>4thena2=4
2850 a=sn*6-5
2860 ifsn>4thena=a-24:a1=10
2870 gosub3890
2880 return
2890 ********************
2900 *** anfangswerte ***
2910 ********************
2920 sys12*4096
2930 @rf,0:@rc,4,255
2940 @rc,3,31:@re:@saa:@saf,0
2950 printchr$(150)chr$(147)
2960 printchr$(158)
2970 b=52224: rem bildspeicher
2980 f=55296: rem farbspeicher
2990 cu=58640: rem cursorsteuerung
3000 ze=214: rem cursorzeile
3010 sp=211: rem cursorspalte
3020 si=54272: rem sid
3030 dime$(3): rem eingabe
3040 dimms(8,2): rem spielerwerte
3050 dimko(8,1): rem koordinaten
3060 e$(1)="joy-1"
3070 e$(2)="joy-2"
3080 e$(3)="taste"
3090 return
3100 *****************
3110 *** titelbild ***
3120 *****************
3130 a$="gelbe kugeln"
3140 a1=1:a2=7:a3=128
3150 gosub3450
3160 a=2:a1=8:a2=7
3170 gosub3890
3180 a=int(len(a$)/2):a1=176-8*a
3190 @src,3:@smc,3:@srx,1:@sry,1
3200 @srk,168-8*len(a$)
3210 @smk,a1,67:@soe:@sme
3220 pokeze,3:pokesp,20-a:syscu
3230 printa$
3240 fori=1to200:next
3250 pokeze,7:pokesp,12:syscu
3260 print"ein programm von"
3270 fori=1to200:next
3280 fori=67to200
3290 @smk,a1,i
3300 next
3310 @sma:@sue
3320 @smf,0:a$="guenter kramer"
3330 a1=1:a2=2:a3=0:@sme
3340 @smx,1:@smy,1
3350 @smk,56,92
3360 gosub3450
3370 a=2:a2=2:a1=14
3380 gosub3890
3390 @rc,2,56
3400 @rc,14,31
3410 return
3420 *********************
3430 *** rahmen setzen ***
3440 *********************
3450 a=len(a$)
3460 if(a2and1)=1thengosub3530
3470 if(a2and2)=2thengosub3650
3480 if(a2and4)=4thengosub3770
3490 return
3500 *******************
3510 *** oberer rand ***
3520 *******************
3530 fori=1+a1toa+a1
3540 @sob,64+a3,1,i:next
3550 @sob,73+a3,1,i:@sob,66+a3,9,i
3560 @sob,75+a3,14,i
3570 fori=a+a1to1+a1step-1
3580 @sob,64+a3,14,i:next
3590 @sob,74+a3,14,i
3600 @sob,66+a3,9,i:@sob,85+a3,1,i
3610 return
3620 ****fn****************
3630 *** mittelsprites ***
3640 *******************
3650 fori=1+a1toa+a1
3660 @smb,64+a3,1,i:next
3670 @smb,73+a3,1,i:@smb,66+a3,9,i
3680 @smb,75+a3,14,i
3690 fori=a+a1to1+a1step-1
3700 @smb,64+a3,14,i:next
3710 @smb,74+a3,14,i
3720 @smb,66+a3,9,i:@smb,85+a3,1,i
3730 return
3740 ********************
3750 *** unterer rand ***
3760 ********************
3770 fori=1+a1toa+a1
3780 @sub,64+a3,1,i:next
3790 @sub,73+a3,1,i:@sub,66+a3,9,i
3800 @sub,75+a3,14,i
3810 fori=a+a1to1+a1step-1
3820 @sub,64+a3,14,i:next
3830 @sub,74+a3,14,i
3840 @sub,66+a3,9,i:@sub,85+a3,1,i
3850 return
3860 *******************
3870 *** text setzen ***
3880 *******************
3890 iflen(a$)=0then3930
3900 if(a2and1)=1thengosub3970
3910 if(a2and2)=2thengosub4040
3920 if(a2and4)=4thengosub4110
3930 return
3940 *****************
3950 *** text oben ***
3960 *****************
3970 fori=0tolen(a$)-1
3980 a4=asc(mid$(a$,i+1,1))and63
3990 @sob,a4+a3,a1,a+i:next
4000 return
4010 ******************
4020 *** text mitte ***
4030 ******************
4040 fori=0tolen(a$)-1
4050 a4=asc(mid$(a$,i+1,1))and63
4060 @smb,a4+a3,a1,a+i:next
4070 return
4080 ******************
4090 *** text unten ***
4100 ******************
4110 fori=0tolen(a$)-1
4120 a4=asc(mid$(a$,i+1,1))and63
4130 @sub,a4+a3,a1,a+i:next
4140 return
4150 **************
4160 *** anfang ***
4170 **************
4180 printchr$(150)
4190 pokeze,12:pokesp,10:syscu
4200 print"wieviele mitspieler?"
4210 print
4220 print"1 = joystick 1"
4230 print"2 = joystick 2"
4240 print"3 = tastatur"
4250 print
4260 print"0 = spiel beginnt"
4270 print"9 = high score"
4280 pokeze,14:pokesp,10:syscu
4290 an=0
4300 an=an+1
4310 printtab(19)"spieler"an" = ";
4320 poke204,0
4330 poke198,0
4340 geta$
4350 ifa$="0"then4440
4360 ifa$="9"then4470
4370 ifa$<"1"then4340
4380 ifa$>"3"then4340
4390 ms(an,0)=val(a$)
4400 poke204,1
4410 printe$(ms(an,0))
4420 ifan<8then4300
4430 goto4550
4440 ifan=1then4340
4450 an=an-1
4460 goto4550
4470 @rc,0,255
4480 @sma
4490 poke204,1
4500 gosub5020
4510 @rc,2,56
4520 @rc,14,31
4530 printchr$(150)chr$(147)
4540 goto4620
4550 poke204,1
4560 print"-"
4570 printtab(19)"in ordnung? ";
4580 poke204,0
4590 geta$
4600 ifa$="j"then4680
4610 ifa$<>"n"then4590
4620 poke204,1
4630 fori=12to24
4640 poke781,i
4650 sys59903
4660 next
4670 goto4180
4680 poke204,1
4690 printa$
4700 return
4710 ***********************
4720 *** lesen highscore ***
4730 ***********************
4740 open15,8,15
4750 open3,8,3,"0:h.s. kugeln,u,r"
4760 input#15,a,a$,a0,a1
4770 ifa=0thenhs=1:goto4880
4780 close3:close15
4790 printchr$(147)a;a$;a0;a1
4800 print"wenn highscore vorhanden,"
4810 print"diskette einlegen und"
4820 print"'j' eingeben."
4830 print"sonst 'n' eingeben."
4840 geta$
4850 ifa$="j"then4740
4860 ifa$<>"n"then4840
4870 hs=0
4880 dimhs$(20),hs(20)
4890 a$=" "
4900 a=0
4910 fori=1to20
4920 ifhs=0then4940
4930 input#3,a$,a
4940 hs$(i)=a$
4950 hs(i)=a
4960 next
4970 close3:close15
4980 return
4990 **************************
5000 *** anzeigen highscore ***
5010 **************************
5020 printchr$(159)chr$(147)
5030 printspc(15)"ehrentafel"
5040 print:print
5050 a$=""
5060 fori=1to7
5070 a$=a$+chr$(32)
5080 next
5090 fori=1to10
5100 a0$=right$(a$+str$(hs(i)),7)
5110 a1$=right$(a$+str$(hs(i+10)),7)
5120 ifhs(i)=0thena0$=a$
5130 ifhs(i+10)=0thena1$=a$
5140 printspc(6)hs$(i)spc(1)a0$;
5150 printspc(1)chr$(122)chr$(122);
5160 printspc(1)hs$(i+10)spc(1)a1$
5170 next
5180 pokeze,22:pokesp,0:syscu
5190 print"weiter = return"
5200 poke198,0
5210 geta$
5220 ifa$<>chr$(13)then5210
5230 return
5240 ************************
5250 *** update highscore ***
5260 ************************
5270 pokeze,10:pokesp,13:syscu
5280 print"namen eingeben"
5290 print
5300 fori=1toan
5310 ifms(i,1)<hs(20)then5530
5320 a0$=""
5330 poke198,0
5340 printspc(13)"spieler"i" = ";
5350 forj=1to4
5360 geta$
5370 ifa$=chr$(13)thenj=4:goto5420
5380 ifa$<chr$(35)then5360
5390 ifa$>chr$(90)then5360
5400 printa$;
5410 a0$=a0$+a$
5420 next
5430 forj=19to1step-1
5440 hs$(j+1)=hs$(j)
5450 hs(j+1)=hs(j)
5460 a=j+1
5470 ifms(i,1)>hs(j)thena=j
5480 hs(a)=ms(i,1)
5490 hs$(a)=left$(a0$+" ",4)
5500 ifa<>jthenj=0
5510 next
5520 print
5530 next
5540 gosub5020
5550 printchr$(147)
5560 ifhs=0then5600
5570 open1,8,15
5580 print#1,"s:h.s. kugeln"
5590 close1
5600 open15,8,15
5610 open3,8,3,"0:h.s. kugeln,u,w"
5620 poke198,0
5630 input#15,a,a$,a0,a1
5640 ifa=0then5740
5650 close3:close15
5660 printchr$(147)a;a$;a0;a1
5670 print"wenn highscore gewuenscht,"
5680 print"diskette einlegen und"
5690 print"'j' eingeben."
5700 print"sonst 'n' eingeben."
5710 geta$:ifa$="n"then5790
5720 ifa$="j"then5570
5730 goto5710
5740 fori=1to20
5750 ifhs(i)=0thenhs$(i)=" "
5760 print#3,hs$(i);chr$(13);hs(i)
5770 next
5780 close3:close15
5790 return
60000 rem nachspann ===============
60010 rem *** zeichensatz/graphik *
60020 s2$=chr$(160)
60030 return